package main

import "fmt"

func main() {
	a := 7

	b := 4
	fmt.Println(a & b)

	c := 1
	fmt.Println(c << 3)

	d := 4 // 100 向左移动 1位 == 1000
	fmt.Println(d << 1)

	fmt.Println(^uintptr(0) >> 63)

	fmt.Println(^uintptr(int64(0)))
	fmt.Println(^uintptr(int32(0)))
	fmt.Println(len("1111111111111111111111111111111111111111111111111111111111111111"))
	fmt.Println(len("11111111111111111111111111111111"))
	fmt.Println(^uintptr(int32(0)) >> 63)
	fmt.Println(^0b111111111111111111111111111111111111111111111111111111111111111)
	fmt.Println(0b11111111111111111111111111111111 >> 63)

	z := 7
	i := 0b111

	fmt.Println(z & i)

	fmt.Println(1111, 64&63)

	fmt.Println(4 << (^uintptr(0) >> 63))

	fmt.Println(63 & ((4<<(^uintptr(0)>>63))*8 - 1))

	fmt.Println(uintptr(1) << 63)

	num := uintptr(1)<<63 - 1
	fmt.Printf("%064b\n", num)
	num1 := fmt.Sprintf("%064b", uintptr(1)<<63)
	fmt.Println(len(num1), num1)

	a = 0b11010110 // 214
	b = 0b01011001 // 89
	c = a &^ b     // 0b10001110, 142
	fmt.Printf("%b\n", c)

	fmt.Println(1 & 1)
	fmt.Printf("%b\n", 0b11010110&0b01011001)
	fmt.Printf("%b\n", 0b11010110|0b01011001)

	var o any
	var p any

	o = p
	fmt.Println(o == nil)

}
